package com.itheima.dubbo.service.impl;

import com.itheima.dubbo.HelloFace;
import com.itheima.dubbo.pojo.User;
import org.apache.dubbo.config.annotation.DubboService;
import org.apache.dubbo.config.annotation.Method;
import org.springframework.stereotype.Service;

/**
 * @Description:
 * @Version: V1.0
 *
 * 配置优先级问题：
 *  * 相同级别：消费方 》 提供方
 *  * 不同级别：方法 》 接口 》 通用
 *
 *配置原则设计目的：
 * 1、先配置服务提供方相关配置
 * 2、如果提供方的配置在消费方不满足使用，则可以在消费方优化
 */
//@DubboService   //服务提供方
//@DubboService(timeout = 1000)   //超时时间默认是1s， timeout修改
//@DubboService(methods = {   //方法级别配置
//        @Method(name = "hello", timeout = 1000)  // name=方法名称
//        //@Method(name = "hello2", timeout = 1000)  // name=方法名称
//})
//@DubboService(timeout = 1000, retries = 0) //重试次数默认是2次， 0 不重试
//幂等性：相同的url无论请求多少次，结果是一致的。
//非冪等：新增POST
//冪等：查询GET、删除DELETE、表单修改PUT
//原则：重试次数不建议设置的过多，建议重试次数不大于2次
@DubboService(version = "1.0.0")
public class HelloFaceImpl implements HelloFace {

    @Override
    public String hello(String name) {

        System.out.println("HelloFaceImpl is run....V1.....");

        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return "Hello Dubbo name: "+name;
    }

    @Override
    public User findByUsername(String username) {
        User user = new User();
        user.setUsername(username);
        return user;
    }
}
